﻿using System;
using System.Web.UI.WebControls;
using Negocio.Produto;
using Negocio.SubtipoProduto;
using Negocio.Marca;
using Negocio.TipoProduto;
using System.IO;

namespace qbaproject.Produto.Editar
{
    public partial class editarProduto : System.Web.UI.Page
    {
        private string nomeArquivo;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregarDdl();

                if (Request.QueryString["id"] != null)
                {
                    hdfIdProduto.Value = Request.QueryString["id"].ToString();
                    preencherTela();
                };
            }
        }

        public void carregarDdl()
        {
            var obNSubtipoProduto = new NSubtipoProduto();
            var obNMarca = new NMarca();
            var obNTipoProduto = new NTipoProduto();

            //Carregar tipo de produto
            ddlTiposProduto.DataSource = obNTipoProduto.pegarTiposProduto();
            ddlTiposProduto.DataBind();
            ddlTiposProduto.Items.Insert(0, new ListItem("Selecionar o tipo de produto", "0"));

            //Carregar status
            ddlSubtiposProduto.DataSource = obNSubtipoProduto.pegarSubtiposProduto();
            ddlSubtiposProduto.DataBind();
            ddlSubtiposProduto.Items.Insert(0, new ListItem("Selecionar o subtipo de produto", "0"));

            //Carregar status
            ddlMarcas.DataSource = obNMarca.pegarMarcas();
            ddlMarcas.DataBind();
            ddlMarcas.Items.Insert(0, new ListItem("Selecionar a marca do produto", "0"));
        }

        public void preencherTela()
        {


            var obNProduto = new NProduto();
            obNProduto.idProduto = Convert.ToInt32(hdfIdProduto.Value);
            obNProduto.pegarProdutoPorId();

            var idMarca = Convert.ToString(obNProduto.idMarca);
            var idSubtipoProduto = Convert.ToString(obNProduto.idSubtipoProduto);
            var cdProduto = Convert.ToString(obNProduto.cdProduto);

            var obNSubtipoProduto = new NSubtipoProduto();
            obNSubtipoProduto.idSubtipoProduto = obNProduto.idSubtipoProduto;
            obNSubtipoProduto.pegarSubtipoProdutoPorId();
            var idTipoProduto = Convert.ToString(obNSubtipoProduto.idSubtipoProduto);

            ddlTiposProduto.SelectedValue = idTipoProduto;
            ddlSubtiposProduto.SelectedValue = idSubtipoProduto;
            ddlMarcas.SelectedValue = idMarca;
            teFoto.ImageUrl = "~/Imagens/Produto/" + obNProduto.teFoto;
            txtCdProduto.Text = cdProduto;
            txtDsProduto.Text = obNProduto.dsProduto;
            txtNmProduto.Text = obNProduto.nmProduto;
            txtTeEspecificacoes.Text = obNProduto.teEspecificacoes;
            txtTeLink.Text = obNProduto.teLink;

        }

        protected void lkbAlterar_Click(object sender, EventArgs e)
        {
            if (verificarForm())
            {
                var obNProduto = new NProduto();
                var idSubtipoProduto = Convert.ToInt32(ddlSubtiposProduto.SelectedValue);
                var idMarca = Convert.ToInt32(ddlMarcas.SelectedValue);
                var cdProduto = Convert.ToInt32(txtCdProduto.Text);
                var idProduto = hdfIdProduto.Value;

                obNProduto.idSubtipoProduto = idSubtipoProduto;
                obNProduto.idMarca = idMarca;
                obNProduto.cdProduto = cdProduto;
                obNProduto.teEspecificacoes = txtTeEspecificacoes.Text;
                obNProduto.teLink = txtTeLink.Text;
                obNProduto.nmProduto = txtNmProduto.Text;
                obNProduto.dsProduto = txtDsProduto.Text;

                nomeArquivo = txtTeFoto.FileName;
                if (txtTeFoto.HasFile)
                {
                    nomeArquivo = txtTeFoto.FileName;
                }
                else
                {
                    var obNProdutoAntigo = new NProduto();
                    obNProdutoAntigo.idProduto = Convert.ToInt32(idProduto);
                    obNProdutoAntigo.pegarProdutoPorId();
                    nomeArquivo = obNProdutoAntigo.teFoto;
                }

                var caminho = Server.MapPath("../../Imagens/Produto/" + idProduto + Path.GetExtension(nomeArquivo));
                if (txtTeFoto.HasFile)
                {
                    
                    File.Delete(caminho);
                    this.txtTeFoto.SaveAs(caminho);
                    obNProduto.teFoto = idProduto + Path.GetExtension(nomeArquivo);
                }
                else if (File.Exists(caminho))
                {
                    File.Delete(caminho);
                    
                }

                if (obNProduto.Alterar(Convert.ToInt32(idProduto)))
                {
                    divMsnEditarSucesso.Visible = true;
                    divMsnEditarAtencao.Visible = false;
                }
                else
                {
                    divMsnEditarSucesso.Visible = false;
                    divMsnEditarAtencao.Visible = true;
                }
            }
        }

        public bool verificarForm()
        {
            var boForm = true;

            if (string.IsNullOrEmpty(txtNmProduto.Text))
            {
                boForm = false;
                lblNmProdutoObrigatorio.Text = "Nome do subtipo de produto é obrigatório!";
            }
            else
            {
                lblNmProdutoObrigatorio.Text = "";
            }

            if (string.IsNullOrEmpty(txtDsProduto.Text))
            {
                boForm = false;
                lblDsProdutoObrigatorio.Text = "Descrição é obrigatória!";
            }
            else
            {
                lblDsProdutoObrigatorio.Text = "";
            }

            return boForm;
        }

        protected void lnk_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Produto/Consultar/consultarProduto.aspx");
        }

        protected void ddlTiposProduto_SelectedIndexChanged(object sender, EventArgs e)
        {
            var idTipoProduto = Convert.ToInt32(ddlTiposProduto.SelectedValue);
            var obNSubtipoProduto = new NSubtipoProduto();
            ddlSubtiposProduto.DataSource = obNSubtipoProduto.pegarSubtiposProduto(idTipoProduto);
            ddlSubtiposProduto.DataBind();
            ddlSubtiposProduto.Items.Insert(0, new ListItem("Selecionar o subtipo de produto", "0"));
        }

    }
}